home *** CD-ROM | disk | FTP | other *** search
- *** ../dist/run.c Thu Dec 16 07:29:31 1993
- --- run.c Thu Dec 16 14:59:38 1993
- ***************
- *** 140,146 ****
- --- 140,150 ----
- {
- int wpid;
- register int pid;
- + #ifdef _ABI_SOURCE
- + struct sigaction ignoresig,intsig,quitsig;
- + #else
- struct sigvec ignoresig,intsig,quitsig;
- + #endif
- union wait status;
- int execvp(), execv();
- int (*execrtn)() = usepath ? execvp : execv;
- ***************
- *** 156,166 ****
- --- 160,178 ----
- _exit (0377);
- }
-
- + #ifdef _ABI_SOURCE
- + ignoresig.sa_handler = SIG_IGN; /* ignore INT and QUIT signals */
- + sigemptyset (&(ignoresig.sa_mask));
- + ignoresig.sa_flags = 0;
- + sigvec (SIGINT,&ignoresig,&intsig);
- + sigvec (SIGQUIT,&ignoresig,&quitsig);
- + #else
- ignoresig.sv_handler = SIG_IGN; /* ignore INT and QUIT signals */
- ignoresig.sv_mask = 0;
- ignoresig.sv_onstack = 0;
- sigvec (SIGINT,&ignoresig,&intsig);
- sigvec (SIGQUIT,&ignoresig,&quitsig);
- + #endif
- do {
- wpid = wait3 (&status.w_status, WUNTRACED, 0);
- if (WIFSTOPPED (status)) {
- ***************
- *** 168,175 ****
- --- 180,192 ----
- wpid = 0;
- }
- } while (wpid != pid && wpid != -1);
- + #ifdef _ABI_SOURCE
- + sigaction (SIGINT,&intsig,0); /* restore signals */
- + sigaction (SIGQUIT,&quitsig,0);
- + #else
- sigvec (SIGINT,&intsig,0); /* restore signals */
- sigvec (SIGQUIT,&quitsig,0);
- + #endif
-
- if (WIFSIGNALED (status) || status.w_retcode == 0377)
- return (-1);
-